<?php
set_time_limit(0);
$dir_name=$_POST['dir_name'];
$dir_name=iconv('UTF-8','GB18030',$dir_name);//Windows XP简体中文系统中（其他系统未测试），如果路径中含有中文，需要此语句，转换UTF-8到GB18030编码。
$files1 = scandir($dir_name);
$file_count=sizeof($files1);
$file_count2=$file_count-2;
echo '共有'.$file_count2."位注册用户。<br />\n";
//在pvpgn_bnet表添加auth_announce列，试验证明发公告ann的权限只与command_groups有关，此键值的作用暂时未知。
include '../config.php';
$pvpgn_bnet=$prefix.'bnet';
$conn->query("ALTER TABLE $pvpgn_bnet ADD auth_announce varchar(128)");
//在pvpgn_friend表添加count列。
$pvpgn_friend=$prefix.'friend';
$conn->query("ALTER TABLE $pvpgn_friend ADD count varchar(128)");
//在pvpgn_friend表添加0_uid、1_uid……列，用于保存用户的好友名单，max_friends最多好友数量应于bnetd.conf中一致。
for($i=0;$i<$max_friends;$i++)
{
	$col_name=$i.'_uid';
	$conn->query("ALTER TABLE $pvpgn_friend ADD $col_name varchar(128)");
}
//逐个读取每个文件名，调用insert_sql()读取文件写入数据库。
for($i=0;$i<$file_count;$i++)
{
	if($files1[$i]!=='.'&&$files1[$i]!=='..')
	{
		$full_name=$dir_name."\\".$files1[$i];
		echo "<h2>导入用户".$files1[$i]."的数据：</h2>\n";
		insert_sql($full_name);
		
	}
	
}
echo "<b>文件数据导入数据库完毕。</b>\n";
FUNCTION insert_sql($one_file)
{
	//查找uid
	$array_file=file($one_file);
	foreach($array_file as $one_line)
	{
		if(stripos($one_line,'userid',0))
		{
			$array1=explode("=",$one_line);
			if(stripos($array1[0],'userid',0))
			{
				$array1[1]=trim($array1[1]);
				$array1[1]=trim($array1[1],'\"');
				$uid=$array1[1];
				break;
			}
		}
	}
	if(isset($uid))
	{
		//在各个表中创建uid的行
		include '../config.php';
		$pvpgn_table=array('bnet','friend','profile','record','wol');
		foreach($pvpgn_table as $one_table)
		{
			$table_name=$prefix.$one_table;
			$result=$conn->query("INSERT INTO $table_name(uid) VALUES('$uid')");
			if($result)
			{
				echo '在'.$table_name."表中创建用户记录<br />\n";
				//$result->free();
			}
		}
		
		//逐行读取用户帐号文件，写入该uid的行
		$file_handle = fopen("$one_file","r");
		while(!feof($file_handle))
		{
			$one_line=fgets($file_handle);//读取文件中的一行数据
			if(strlen($one_line)!==0&&$one_line!=="\r\n")//行不为空
			{
				//echo $one_line."<br />\n";
				$array1=explode("=",$one_line);//用等号=把一行切割为2段，左边和右边
				for($i=0;$i<count($array1);$i++)//对2段字符串进行清理
				{
					$array1[$i]=trim($array1[$i]);//清除空白
					$array1[$i]=trim($array1[$i],'\"');//清除引号
				}
				$array2=explode("\\\\",$array1[0]);//用两个捺斜杠切割左边的字符串，可能得到2段、3段或4段
				$table_name=$prefix.$array2[0];//左边$array2[0]是表的名称
				/*if($array2[0]=='friend')
				{
					if($array2[1]=='count')
					{
						$conn->query("ALTER TABLE $table_name ADD count varchar(128)");
						$conn->query("UPDATE $table_name SET count='$array1[1]' WHERE uid='$uid'");
					}
					else
					{
						$col_name=$array2['1']."_".$array2['2'];
						$conn->query("ALTER TABLE $table_name ADD $col_name varchar(128)");
						$result=$conn->query("UPDATE $table_name SET $col_name='$array1[1]' WHERE uid='$uid'");
						if($result)
						{
							echo '导入一行数据：'.$table_name.'.'.$col_name.'='.$array1[1]."<br />\n";
						}
					}
				}*/
				//else
				{
					if(sizeof($array2)==2)//左边切割为2段
					{
						$col_name=$array2['1'];//列名是$array2['1']
					}
					if(sizeof($array2)==3)//左边切割为3段
					{
						$col_name=$array2['1']."_".$array2['2'];//列名是左边$array2['1']、$array2['2']的组合
						if(empty($_POST['admin'])&&$array2['2']=='admin')
						{
							$array1['1']='false';//未选择保留总管理员身份，成为普通用户身份，将影响管理员头像的显示。
						}
						if(empty($_POST['operator'])&&$array2['2']=='operator')
						{
							$array1['1']='false';//未选择保留频道管理员身份，成为普通用户身份，将影响频道管理员头像的显示。
						}
						if(empty($_POST['command_groups'])&&$array2['2']=='command_groups')
						{
							$array1['1']='1';//未选择保留权限，command_groups将从255恢复至1，成为普通用户权限，不能进行管理操作（发公告ann等）。
						}
					}
					if(sizeof($array2)==4)//左边切割为4段
					{
						$col_name=$array2['1']."_".$array2['2']."_".$array2['3'];//列名是左边$array2['1']、$array2['2']、$array2['3']的组合
					}
					$result=$conn->query("UPDATE $table_name SET $col_name='$array1[1]' WHERE uid='$uid'");
					if($result)
					{
						echo '导入一行数据：'.$table_name.'.'.$col_name.'='.$array1[1]."<br />\n";
					}
				}
			}
		}
		fclose($file_handle);
		//username键值应等于acct_username的值，因为pvpgn使用数据库时需要username，所以进行同步
		$pvpgn_bnet=$prefix."bnet";
		//$result=$conn->query("SELECT acct_username FROM $pvpgn_bnet WHERE uid='$uid'");
		//while($rows=$result->fetch_row())
		{
		//	$acct_username=$rows[0];
		}
		$result=$conn->query("UPDATE $pvpgn_bnet SET username=$pvpgn_bnet.acct_username WHERE uid='$uid'");
		if($result)
			echo '同步：'.$pvpgn_bnet.'.username='.$pvpgn_bnet.".acct_username <br />\n";

		//如果用户的等级为0，则设置等级为1。（此功能是为了更换头像）
		$pvpgn_record=$prefix."record";
		$results=$conn->query("UPDATE $pvpgn_record SET W3XP_solo_level=1 WHERE uid='$uid' AND W3XP_solo_level=0");
		if($result)
			echo '因为用户的等级为0，所以设置等级为1：'.$pvpgn_record.".W3XP_solo_level=1<br />\n";
	}
}
?>